import 'package:markdown/markdown.dart' as md;

/// 括号分数的内联语法，用于识别和解析括号中的分数
class BracketFractionSyntax extends md.InlineSyntax {
  BracketFractionSyntax() : super(_pattern);

  // 匹配括号分数的正则表达式 - 支持嵌套括号的复杂格式
  // 如：(1/2)、((现期量 - 基期量)/基期量)、(基期量/(现期量 - 基期量))
  static const String _pattern = r'[\(（](?:[^()（）/]*(?:[\(（][^()（）]*[\)）])?[^()（）/]*)/(?:[^()（）/]*(?:[\(（][^()（）]*[\)）])?[^()（）/]*)[\)）]';

  @override
  bool onMatch(md.InlineParser parser, Match match) {
    final fractionText = match.group(0)!;
    
    // 创建一个自定义元素来标记这是一个括号分数
    final element = md.Element.text('bracket_fraction', fractionText);
    parser.addNode(element);
    return true;
  }
}